package spring.demo7;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class AspectTest {

	// 所有包中 所有类中的doing名 的方法都会 被
	@Pointcut("execution(* *.doing(..))")
	public void master() {}
	
	@Before("master()")
	public void beforeTest() {
		System.out.println("执行所有的doing方法前执行Before");
	}
	@After("master()")
	public void afterTest() {
		System.out.println("执行所有的doing方法后执行after");
	}
	// Around 注解 会代理 doing 方法执行
	@Around("master()")
	public Object aroundTest(ProceedingJoinPoint pjp) throws Throwable {
		System.out.println("around开始代理 doing执行");
		Object  o = pjp.proceed();
		System.out.println("around代理 doing执行完成");
		return o;
	}
}
